package miniMVC.i
{
	

	/**
	 * 外观模式,定义mvc绑定,收发消息的接口
	 * @author Pelephone
	 */
	public interface IFacade extends ISender,IRichDispatcher
	{
		/**
		 * 注册View到facade
		 * @param view
		 
		function registerView(view:IView):void;*/
		/**
		 * 通过注册名判断facade上是否已注册了此view
		 * @param viewName
		 * @return 
		 
		function hasView(viewName:String):Boolean;*/
		/**
		 * 获取view
		 * @param viewName
		 * @return 
		 
		function getView(viewName:String):IView;*/
		
		
		/**
		 * 注册Model到facade
		 * @param view
		 
		function registerModel(model:IModel):void;*/
		/**
		 * 通过注册名判断facade上是否已注册了此Model
		 * @param modelName
		 * @return 
		 
		function hasModel(modelName:String):Boolean;*/
		/**
		 * 获取Model
		 * @param modelName
		 * @return 
		 
		function getModel(modelName:String):IModel;*/
		
		
		/**
		 * 注册Controller到facade
		 * @param view
		 
		function registerController(model:IController):void;*/
		/**
		 * 通过注册名判断facade上是否已注册了此Controller
		 * @param controllerName
		 * @return 
		 
		function hasController(controllerName:String):Boolean;*/
		/**
		 * 获取Controller
		 * @param controllerName
		 * @return 
		 
		function getController(controllerName:String):IController;*/
		
		/**
		 * 从facade移出绑定的mvc对象
		 * @param controllerName
		 
		function removeBinder(bindName:String):IBinder;*/
		/**
		 * 将对象绑定在facade上,供查找
		 * @param bindName
		 * @param binder
		 */
		function registerBinder(bindName:String,binder:IBinder):void;
		/**
		 * 是该名字是否定有对象
		 * @param bindName
		 * @return 
		 */
		function hasBinder(bindName:String):Boolean;
		/**
		 * 获取绑定在facade上的绑定对象
		 * @param controllerName
		 * @return 
		 */
		function getBinder(bindName:String):IBinder;
		/**
		 * 移除绑定在facade上面的mvc对象
		 * @param bindName
		 */
		function removeBinder(bindName:String):IBinder;
		
		/**
		 * 销毁此对象
		 */
		function dispose():void;
		
		/**
		 * 拖管消息
		 * @param note
		 
		function dispatchNote(note:Note):void;*/
	}
}